BÀI GIẢNG: CÁCH TẠO PACKAGE VÀ CHIA SẺ LÊN PYPI
I. Mục tiêu bài học
Học sinh sẽ:
- Biết cách cấu trúc một Python package đúng chuẩn.
- Biết cách tạo tài khoản và đưa package lên PyPI.
- Biết sử dụng
setup.py
,pyproject.toml
, và công cụbuild
,twine
.
II. PyPI là gì?
- PyPI (Python Package Index) là nơi lưu trữ và chia sẻ các thư viện Python.
- Khi bạn
pip install ten_thu_vien
, pip sẽ tìm trên PyPI để tải về.
Mục tiêu: Đưa gói thư viện của chính mình lên PyPI để người khác có thể cài bằng:
pip install ten_thu_vien
III. Tạo một package Python đơn giản
Cấu trúc chuẩn:
my_package/
│
├── src/
│ └── my_package/
│ ├── __init__.py
│ └── math_utils.py
│
├── tests/
│ └── test_math_utils.py
│
├── README.md
├── LICENSE
├── pyproject.toml
├── setup.cfg
├── setup.py
Ví dụ nội dung
src/my_package/math_utils.py
def add(a, b):
return a + b
src/my_package/__init__.py
from .math_utils import add
IV. Viết file setup.py
Tạo file setup.py
ở gốc:
from setuptools import setup, find_packages
setup(
name="my_package",
version="0.1.0",
description="A simple math utility package",
author="Phu Nguyen",
author_email="youremail@example.com",
packages=find_packages(where="src"),
package_dir={"": "src"},
classifiers=[
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
],
python_requires=">=3.7",
)
V. Viết pyproject.toml
pyproject.toml
giúp pip và các công cụ build hiểu được cách xử lý package của bạn.
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
VI. Thêm mô tả dự án
Viết file README.md
để giới thiệu về thư viện.
# my_package
A simple math package that provides an `add` function.
VII. Tạo gói cài đặt (build package)
Cài công cụ build:
pip install build
Chạy lệnh tạo package:
python -m build
Sau khi chạy, sẽ có thư mục dist/
chứa file .tar.gz
và .whl
.
VIII. Tạo tài khoản trên PyPI
- Truy cập https://pypi.org/account/register/
- Đăng ký tài khoản.
- Kích hoạt email.
IX. Đăng package lên PyPI
Cài công cụ twine
:
pip install twine
Đăng package:
twine upload dist/*
Sẽ yêu cầu nhập tài khoản và mật khẩu PyPI.
X. Kiểm tra lại
Nếu thành công, bạn có thể lên https://pypi.org/project/my_package/ để xem gói của mình đã được public.
Bây giờ, ai cũng có thể cài bằng:
pip install my_package
XI. Lưu ý quan trọng
- Tên gói phải chưa có ai dùng trên PyPI.
- Gói nên có:
README.md
,LICENSE
,version
,author
. - Không đẩy file
venv
,__pycache__
, hoặc dữ liệu không cần thiết. - Mỗi lần cập nhật gói phải đổi version (
0.1.1
,0.2.0
, v.v.)
XII. Bài tập thực hành
-
Tạo gói thư viện tên
text_tools
, chứa:- Hàm
reverse_text(text)
- Hàm
remove_vowels(text)
- Hàm
-
Cấu trúc chuẩn như hướng dẫn.
-
Tạo tài khoản PyPI test: https://test.pypi.org
-
Upload gói lên test PyPI bằng:
twine upload --repository testpypi dist/*
- Cài thử bằng:
pip install -i https://test.pypi.org/simple/ text_tools